﻿#ifndef _MARIO_H_
#define _MARIO_H_

#include "gravity_object.h"
#include "sprite.h"
#include <dinput.h>
#include "config.h"

class CMario: public CGravityObject
{
protected:
	CSprite* _sprite_small_left;
	CSprite* _sprite_small_right;
	CSprite* _sprite_small_jump_left;
	CSprite* _sprite_small_jump_right;

	CSprite* _sprite_big_left;
	CSprite* _sprite_big_right;
	CSprite* _sprite_big_jump_left;
	CSprite* _sprite_big_jump_right;


	DWORD _time_start_x; //Thời gian bắt đầu chuyển trạng thái di chuyển
	int _time_x; //Khoảng thời gian di chuyển từ khi chuyển trạng thái di chuyển 

	float _vxo; //Tính toán vận tốc khi có gia tốc
	float _a; //Gia tốc
	bool _is_fall_down; //Xét trạng thái rơi khi điều khiển nhân vật
	bool _is_small;
	bool _is_super;

public:
	CMario(LPD3DXSPRITE SpriteHandler, float XHandle, float YHandle, int ScreenWidth, int ScreenHeight);
	~CMario();

	void Init(LPDIRECT3DDEVICE9 d3dDevice); //Khởi tạo các thuộc tính của đối tượng
	void Update(int DeltaTime);
	void Draw();

	/*=====Control=====*/
	//Change 
	void SetToBig();
	void SetToSmall();
	void SetToSuper();

	//======Move=====
	void KeyLeftPress(); //Điều phối hướng di chuyển
	void KeyRightPress(); 
	
	void KeyMoveDown(); //Điều phối gia tốc của mario là nhanh dần đều
	void KeyMoveUp(); //Điều phối gia tốc là chậm dần đều

	//======Jump=====
	void KeyJumpDown();
	void KeyJumpUp();

protected:
	//======Action=====
	void _MoveLeft();
	void _MoveRight();
	void _Stand();
	void _Jump();
};
#endif
